<?php

/**
 * enquete actions.
 *
 * @package    Terapia Vital
 * @subpackage enquete
 * @author     Foxsis
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class enqueteActions extends sfActionsFoxsis
{
	public function executeIndex(sfWebRequest $request)
	{
		return $this->redirect('@homepage');
	}
	
	public function executeEnquete(sfWebRequest $request)
	{
		$q = new Doctrine_Query();
		$enquete = $q->from('Enquete e')
		  ->where("e.st_enquete = 'S'")
		  ->execute();
		  
		if(count($enquete))
			$this->enquete = $enquete[0];
		else 
			$this->enquete = array();
	}
	
	public function executeResultado(sfWebRequest $request)
	{
		$id = $request->getParameter('id_enquete');
		$this->enquete = Doctrine::getTable('Enquete')->find($id);
		
		$this->total = EnqueteOpcaoTable::getTotalVotos($id);
	}
	
	public function executeVotar(sfWebRequest $request)
	{
		try{
			if($request->hasParameter('id_enquete'))
			{
				Doctrine::getConnectionByTableName('Enquete')->beginTransaction();
				$id_enquete = $request->getParameter('id_enquete');
				$id_opcao = $request->getParameter('opcao');
				$ip = $_SERVER['REMOTE_ADDR'];
				
				$EnqueteOpcao = Doctrine::getTable('EnqueteOpcao')->find($id_opcao);
				
				// verifico se o ip ja votou
				$javotou = EnqueteVotoTable::carregarVoto($id_enquete, $ip);
				if(count($javotou))
					echo '<span class="error">Você já votou nessa enquete.</span>';
				else {
					$EnqueteOpcao->setNuVoto($EnqueteOpcao->getNuVoto() + 1);
					$EnqueteOpcao->save();
					
					$EnqueteVoto = new EnqueteVoto();
					$EnqueteVoto->setIpUsuario($ip);
					$EnqueteVoto->setIdEnquete($id_enquete);
					$EnqueteVoto->setIdEnqueteOpcao($id_opcao);
					$EnqueteVoto->save();
					
					Doctrine::getConnectionByTableName('Enquete')->commit();
					
					echo '<span class="success">Voto realizado com sucesso.</span>';
				}
			}
		} catch (Exception $e) {
			Doctrine::getConnectionByTableName('Enquete')->rollback();
			echo $e->getMessage();
		}
		
		$this->forward('enquete', 'resultado');
	}
}
